/*hello_module.c*/
#include<linux/init.h>
#include<linux/time.h>
#include<linux/wait.h>
#include<linux/kernel.h>

#include<linux/jiffies.h>
#include<linux/types.h>
#include<linux/module.h>
#include<linux/device.h>
#include <linux/sched.h>
#include<linux/delay.h>
#include<linux/kfifo.h>
#include<linux/slab.h>
MODULE_LICENSE("GPL");

#define SERIAL_IMX_MAJOR        207
#define MINOR_START	        16
#define DEV_NAME		"helloworld"

struct kfifo queue;
static int hello_init(void)
{
	uint8_t i;
	//kfifo fifo1;
	int a[10]={1,2,3,4,5,6,7,8,9,10};
	int b=0xff;
	uint32_t size=1023,ret=0;
	void *buffer=NULL;
	buffer=kmalloc(size,GFP_KERNEL);
	if(!buffer)
		return 0;
	ret=kfifo_init(&queue,(void*)buffer,size*sizeof(void*));
	if(IS_ERR(ret))
		kfree(buffer);
	
	//printk(KERN_EMERG "delay_13\n");

	for(i=0;i<10;i++)
	{
		kfifo_in(&queue,&a[i],sizeof(void*));
	}
	for(i=0;i<10;i++)
	{
		kfifo_out(&queue,&b,sizeof(void*));
		printk(KERN_EMERG"%d\n",b);
	}
	return ret;
}

static void hello_exit(void)

{
	printk(KERN_EMERG "Hello Diver Exit !\n");
}
module_init(hello_init);
module_exit(hello_exit);
